// TODO: java版临时注释 默认值优先级低
// package com.inspur.edp.bef.dtgenerator.core.beActionAssembler.defaultValue;
//
//
//
//
//
//
//
//
//
//
//
//
//
//
// public class DefaultValueProcessorCtorGenerator extends ClassConstructorMethodGenerator
// {
//
//		//region MethodBody
//	private static final String defaultValuesFieldName = "values";
//	private BefCoreGenCtx coreGenCtx;
//
//	public DefaultValueProcessorCtorGenerator(BefCoreGenCtx coreGenCtx, String name)
//	{
//		super(name);
//		this.coreGenCtx = coreGenCtx;
//	}
//
//	//protected override List<ParameterInfo>  getParameterCollection() { return
// CustomBEActionMethodGenerator.GetMethodParameters(method); }
//
//	//protected override List<SyntaxNodeOrToken>  buildConstructorInitializerParams() { return new
// List<SyntaxNodeOrToken>(1)
//	//{
//	//
// SyntaxFactory.Argument(SyntaxFactory.IdentifierName(CustomBEActionMethodGenerator.beContextParName))
//	//}; }
//
//	//protected override ConstructorInitializerType  buildConstructorInitializerType() { return
// ConstructorInitializerType.Base; }
//
//
//	@Override
//	protected java.util.ArrayList<ModifierKeyword>  getAccessModifiers() { return new
// java.util.ArrayList<ModifierKeyword>(1) { ModifierKeyword.PUBLIC_KEYWORD }; }
//
//
//	@Override
//	protected java.util.ArrayList<ParameterInfo>  getParameterCollection() { return new
// java.util.ArrayList<ParameterInfo>(); }
//
//	@Override
//	protected Block  buildMethodBody()
//	{
//		java.util.ArrayList<StatementSyntax> statemets = new java.util.ArrayList<StatementSyntax>();
//		for (var node : coreGenCtx.getBeGenCtx().getBE().GetAllNodes())
//		{
//			java.util.ArrayList<SyntaxNodeOrToken> nodeInitializerSyntax = GetNodeInitializerSyntax(node);
//			if (nodeInitializerSyntax.Any())
//			{
//
//	statemets.add(SyntaxFactory.ExpressionStatement(SyntaxFactory.InvocationExpression(SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.IdentifierName(defaultValuesFieldName), SyntaxFactory.IdentifierName("Add"))).WithArgumentList(SyntaxFactory.ArgumentList(SyntaxFactory.<ArgumentSyntax>SeparatedList(new SyntaxNodeOrToken[]{ SyntaxFactory.Argument(SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression, SyntaxFactory.Literal(node.getCode()))), SyntaxFactory.Token(SyntaxKind.CommaToken), SyntaxFactory.Argument(SyntaxFactory.ObjectCreationExpression(TypeUtils.GetTypeSyntax(java.util.HashMap<String, IDefaultValue>.class)).WithInitializer(SyntaxFactory.InitializerExpression(SyntaxKind.CollectionInitializerExpression, SyntaxFactory.<ExpressionSyntax>SeparatedList(nodeInitializerSyntax.toArray(new SyntaxNodeOrToken[]{})))))})))));
//			}
//		}
//		return SyntaxFactory.Block(statemets.toArray(new StatementSyntax[]{}));
//	}
//
//	private java.util.ArrayList<SyntaxNodeOrToken>  getNodeInitializerSyntax(GspBizEntityObject node)
//	{
//		java.util.ArrayList<SyntaxNodeOrToken> rez = new java.util.ArrayList<SyntaxNodeOrToken>();
//		for (var element : node.getAllElementList(true))
//		{
//			if ((element.IsRefering() && !DefaultValueChanged(element)) ||
// DotNetToJavaStringHelper.isNullOrEmpty(element.DefaultValue))
//			{
//				continue;
//			}
//			if (rez.size() > 0)
//			{
//				rez.add(SyntaxFactory.Token(SyntaxKind.CommaToken));
//			}
//			GetNativeTypeAndSyntax(element, var nativeType, var argSyntax);
//			rez.add(SyntaxFactory.InitializerExpression(SyntaxKind.ComplexElementInitializerExpression,
// SyntaxFactory.<ExpressionSyntax>SeparatedList(new SyntaxNodeOrToken[]{
// SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression,
// SyntaxFactory.Literal(element.LabelID)), SyntaxFactory.Token(SyntaxKind.CommaToken),
// DotNetToJavaStringHelper.isNullOrEmpty(element.DefaultValue) ?
// (SyntaxNodeOrToken)SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression) :
// (SyntaxNodeOrToken)SyntaxFactory.ObjectCreationExpression(TypeUtils.GetTypeSyntax(StaticDefaultValue<>.class.MakeGenericType(nativeType))).WithArgumentList(SyntaxFactory.ArgumentList(SyntaxFactory.<ArgumentSyntax>SingletonSeparatedList(SyntaxFactory.Argument(argSyntax))))})));
//		}
//		return rez;
//	}
//
//	public final void  getNativeTypeAndSyntax(IGSPCommonElement element, RefObject<java.lang.Class>
// nativeType, RefObject<ExpressionSyntax> argSyntax)
//	{
//		if (element.ObjectType == GSPElementObjectType.None)
//		{
//			GetDefaultValueSyntax_Normal(element, nativeType, argSyntax);
//		}
//		else if (element.ObjectType == GSPElementObjectType.Enum)
//		{
//			GetDefautlValueSyntax_Enum(element, nativeType, argSyntax);
//		}
//		else
//		{
//			throw new IllegalArgumentException(String.Concat("不支持在对象类型为 ", element.ObjectType, " 的字段 ",
// element.getCode(), " 上设置默认值"));
//		}
//	}
//
//	private void  getDefaultValueSyntax_Normal(IGSPCommonElement element, RefObject<java.lang.Class>
// nativeType, RefObject<ExpressionSyntax> argSyntax)
//	{
//		switch (element.MDataType)
//		{
//			case Boolean:
//				nativeType.argvalue = Boolean.class;
//				argSyntax.argvalue = Boolean.parseBoolean(element.DefaultValue) ?
// SyntaxFactory.LiteralExpression(SyntaxKind.TrueLiteralExpression) :
// SyntaxFactory.LiteralExpression(SyntaxKind.FalseLiteralExpression);
//				break;
//			case Date:
//			case DateTime:
//				nativeType.argvalue = java.util.Date.class;
//				java.util.Date.Parse(element.DefaultValue, CultureInfo.InvariantCulture);
//				argSyntax.argvalue =
// SyntaxFactory.InvocationExpression(SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, TypeUtils.GetTypeSyntax(java.util.Date.class), SyntaxFactory.IdentifierName("Parse"))).WithArgumentList(SyntaxFactory.ArgumentList(SyntaxFactory.<ArgumentSyntax>SeparatedList(new SyntaxNodeOrToken[]{ SyntaxFactory.Argument(SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression, SyntaxFactory.Literal(element.DefaultValue))), SyntaxFactory.Token(SyntaxKind.CommaToken), SyntaxFactory.Argument(SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, TypeUtils.GetTypeSyntax(CultureInfo.class), SyntaxFactory.IdentifierName("InvariantCulture")))})));
//				break;
//			case Decimal:
//				nativeType.argvalue = java.math.BigDecimal.class;
//				argSyntax.argvalue = SyntaxFactory.LiteralExpression(SyntaxKind.NumericLiteralExpression,
// SyntaxFactory.Literal(java.math.BigDecimal.Parse(element.DefaultValue)));
//				break;
//			case Integer:
//				nativeType.argvalue = Integer.class;
//				argSyntax.argvalue = SyntaxFactory.LiteralExpression(SyntaxKind.NumericLiteralExpression,
// SyntaxFactory.Literal(Integer.parseInt(element.DefaultValue)));
//				break;
//			case String:
//			case Text:
//				nativeType.argvalue = String.class;
//				argSyntax.argvalue = SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression,
// SyntaxFactory.Literal(element.DefaultValue));
//				break;
//			default:
//				throw new IllegalArgumentException();
//		}
//	}
//
//	public final void  getDefautlValueSyntax_Enum(IGSPCommonElement element,
// RefObject<java.lang.Class> nativeType, RefObject<ExpressionSyntax> argSyntax)
//	{
//		//var entityCtx = coreGenCtx.getBeGenCtx().EntityGenerator.getContext();
//		var nodeTypeName = element.BelongObject.GetGeneratedEntityClassInfo().GetClassFullName();
//		//var nodeTypeName = entityCtx.NodeTypes[element.BelongObject.getCode()].FullName;
//		//todo:wj-core已改
//		//var nodeType = entityCtx.Assembly.GetType(nodeTypeName);
//		var entityAssembly = coreGenCtx.getBeGenCtx().ProjectApiAssembly;
//		java.lang.Class nodeType = entityAssembly.GetType(nodeTypeName);
//		nativeType.argvalue = Utils.ConvertPropNativeType(Utils.GetPropertyType(nodeType,
// element.LabelID));
//		argSyntax.argvalue =
// SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression,
// TypeUtils.GetTypeSyntax(nativeType.argvalue),
// SyntaxFactory.IdentifierName(Enum.GetName(nativeType.argvalue, Enum.Parse(nativeType.argvalue,
// element.DefaultValue))));
//	}
//
//	private boolean  defaultValueChanged(GSPCommonElement element)
//	{
//		var parentElement = coreGenCtx.getBeGenCtx().getParentBE().FindElementById(element.ID);
//		return parentElement.DefaultValueType != element.DefaultValueType ||
// !String.equals(parentElement.DefaultValue, element.DefaultValue);
//	}
//
//		//endregion
// }
